#include "mypushbutton.h"
#include<QDebug>
#include<QPropertyAnimation>//动画特效  特性动画
//MyPushButton::MyPushButton(QWidget *parent) : QWidget(parent)
//{

//}
    //封装自定义按钮
   MyPushButton::MyPushButton(QString nomalImg,QString pressImg) //第二个默认值为切换图片 第二个按钮
{
    this->nomalImgPath=nomalImg;
    this->pressImgPath=pressImg;

    QPixmap pix;
    bool ret=pix.load(nomalImg);
    if(!ret)
    {
        qDebug()<<"图片加载失败";
    }
    //设置按钮的大小来 适应 图片固定大小
    this->setFixedSize(pix.width(),pix.height());
    //设置不规则图片样式
    this->setStyleSheet("QPushButton{border:0px}");
    //设置图标
    this->setIcon(pix);
    //设置图标大小
    this->setIconSize(QSize(pix.width(),pix.height()));

}
   void  MyPushButton::zoom1()
   {
        //创建动态对象       geometry则表示QObject的属性。
       QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");
       //设置动画间隔
       animation->setDuration(200);
       //起始位置
       animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
       //结束位置
       animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
       //设置弹跳曲线
       animation->setEasingCurve(QEasingCurve::OutBounce);
       animation->start();


   }
   void  MyPushButton::zoom2()
   {
       //创建动态对象       geometry则表示QObject的属性。
      QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");
      //设置动画间隔
      animation->setDuration(200);
      //起始位置
      animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
      //结束位置
      animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
      //设置弹跳曲线
      animation->setEasingCurve(QEasingCurve::OutBounce);
      animation->start();
   }

   void MyPushButton::mousePressEvent(QMouseEvent*e)
   {
       if(this->pressImgPath!="")//传入的按下图片不为空 说明有按下的状态 切换图标
       {

           QPixmap pix;
           bool ret=pix.load(this->pressImgPath);
           if(!ret)
           {
               qDebug()<<"图片加载失败";
           }
           //设置按钮的大小来 适应 图片固定大小
           this->setFixedSize(pix.width(),pix.height());
           //设置不规则图片样式
           this->setStyleSheet("QPushButton{border:0px}");
           //设置图标
           this->setIcon(pix);
           //设置图标大小
           this->setIconSize(QSize(pix.width(),pix.height()));
        }
       //让父类执行其他内容
       return QPushButton::mousePressEvent(e);

   }

   void MyPushButton::mouseReleaseEvent(QMouseEvent*e)
   {
       if(this->pressImgPath!="")//传入的按下图片不为空 说明有按下的状态 切换图标
       {

           QPixmap pix;
           bool ret=pix.load(this->nomalImgPath);
           if(!ret)
           {
               qDebug()<<"图片加载失败";
           }
           //设置按钮的大小来 适应 图片固定大小
           this->setFixedSize(pix.width(),pix.height());
           //设置不规则图片样式
           this->setStyleSheet("QPushButton{border:0px}");
           //设置图标
           this->setIcon(pix);
           //设置图标大小
           this->setIconSize(QSize(pix.width(),pix.height()));
        }
       //让父类执行其他内容
       return QPushButton::mouseReleaseEvent(e);

   }
